import axios from 'axios'
import { ElMessage } from 'element-plus'
import { useRouter } from 'vue-router'

const router = useRouter()

// 创建axios实例
const api = axios.create({
    baseURL: '/api',
    timeout: 15000,
    headers: {
        'Content-Type': 'application/json'
    }
});

// 请求拦截器
api.interceptors.request.use(
    config => {
        const token = localStorage.getItem('jwtToken');
        if (token) {
            config.headers['Authorization'] = `Bearer ${token}`;
        }
        return config;
    },
    error => {
        console.error('请求错误:', error);
        return Promise.reject(error);
    }
);

// 响应拦截器
api.interceptors.response.use(
    response => {
        return response.data;
    },
    error => {
        if (error.response) {
            switch (error.response.status) {
                case 401:
                    // 未授权，清除token并跳转到登录页
                    localStorage.removeItem('jwtToken');
                    localStorage.removeItem('username');
                    localStorage.removeItem('userRole');
                    ElMessage.error('登录已过期，请重新登录');
                    router.push('/');
                    break;
                case 403:
                    // 权限不足
                    ElMessage.error('权限不足，无法执行此操作');
                    break;
                case 500:
                    ElMessage.error('服务器错误，请稍后重试');
                    break;
                default:
                    ElMessage.error(error.response.data?.message || '请求失败');
            }
        } else if (error.request) {
            ElMessage.error('服务器无响应，请检查网络连接');
        } else {
            ElMessage.error('请求配置错误');
        }
        return Promise.reject(error);
    }
);

// 用户相关API
export const userApi = {
    // 用户登录
    login: (data) => {
        return api.post('/login', data);
    },
    // 用户注册
    register: (data) => {
        return api.post('/register', data);
    },
    // 获取用户信息
    checkRole: () => {
        return api.get('/user/role');
    },
    // 更新用户信息
    logout: () => {
        localStorage.removeItem('jwtToken');
        return Promise.resolve();
    }
};

// 博客相关API
export const blogApi = {
    // 获取博客列表
    getBlogList: () => {
        return api.get('/blog/list');
    },
    // 获取博客详情
    getBlogDetail: (id) => {
        return api.get(`/blog/${id}`);
    },
    // 创建博客
    createBlog: (data) => {
        return api.post('/blog', data);
    },
    // 更新博客
    updateBlog: (id, data) => {
        return api.put(`/blog/${id}`, data);
    },
    // 删除博客
    deleteBlog: (id) => {
        return api.delete(`/blog/${id}`);
    }
};

export default api; 